import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

import java.util.Vector;

import java.io.FileOutputStream;

import java.io.PrintStream;

public class Seccion

{
	private int numero;
	private Profesor profesor = new Profesor();
	private static Vector<Alumno> alumno = new Vector() ;	
	

	public Vector<Alumno> getAlumno() {
		return alumno;
	}

	public void setAlumno(Vector<Alumno> alumno) {
		this.alumno = alumno;
	}

	public Seccion()
	{
		super();
		// TODO Auto-generated constructor stub
	}
	
	public Seccion(int numero, Profesor profesor, Vector<Alumno> alumno) {
		super();
		// TODO Auto-generated constructor stub
		this.numero = numero;
		this.profesor = profesor;
		this.alumno = alumno;
	}

	public int getNumero()
	{
		return numero;
	}

	public void setNumero(int numero)
	{
		this.numero = numero;
	}

	public Profesor getProfesor()
	{
		return profesor;
	}

	public void setProfesor(Profesor profesor)
	{
		this.profesor = profesor;
	}
	

	
	public void inscribirAlumno(Alumno alumno ){
		
		this.alumno.addElement(alumno);
		/*alumno.setCedula(cedula);
		alumno.setNombre(nombre);
		alumno.setApellido(apellido);
		alumno.setNota1(0);
		alumno.setNota2(0);
		alumno.setNota3(0);
		alumno.setEstado("Sin presentar");		
		vAlumno.addElement(alumno);*/
		
	}
	
	
	public static int buscarInd(String cedula, Vector<Alumno> vAlumno)
	{
		int indice=0;
		
			for (int i=0;i<vAlumno.size();i++)
			{
				if (vAlumno.elementAt(i).getCedula().equals(cedula))
				{
					indice=i;
				}
				
			}
		return indice;
	}
	
	public static void retirarAlumno(String cedula) throws IOException
	{	
		int ind = 0;					
		ind = buscarInd(cedula, alumno);
		alumno.removeElementAt(ind);		
			
	
	}
	
	public void listarCedula() throws IOException
	{			
				
			FileOutputStream salida;
			PrintStream ps;
			String nombreArchivo= "listaCedula.txt";
			String texto = "";
			
			salida = new FileOutputStream(nombreArchivo);			
			ps= new PrintStream(salida);
			
			//System.out.println("***********************Listado de alumnos por cedula*******************************");
			texto="Seccion: "+ this.numero +"\nProfesor: "+ this.getProfesor().getTituloProfesor()+". "+ this.getProfesor().getApellido()+" "+this.getProfesor().getNombre() +"\n";
			//System.out.println(texto);
			ps.println(texto);
			texto="";
			
			for(int i=0;i<alumno.size();i++){							
				texto = (" Cedula: "+alumno.elementAt(i).getCedula()+" Nombre: "+alumno.elementAt(i).getNombre()+" Apellido: "+alumno.elementAt(i).getApellido()+" Nota final: "+alumno.elementAt(i).getNotaFinal()+"\n");
				ps.println(texto);				
			}			
			ps.close();
	}
	
	
	public void listarEstado(String estado,int nroSeccion, String  nomProfesor) throws IOException
	{			
		String nombreArchivo="";
		int cont=0;// Cantidad de aprobados o reprobados
		
		if (estado=="Aprobado")
		{
			nombreArchivo= "archivoEstadoAprobado.txt";
			
		}
		else{
			nombreArchivo= "archivoEstadoReprobado.txt";
			 
		
		}
		
			FileOutputStream salida;
			PrintStream ps;
			
			salida = new FileOutputStream(nombreArchivo);			
			ps= new PrintStream(salida);
			
			
			
			String texto = "";
			texto="Seccion: "+ nroSeccion +"\nProfesor: "+ nomProfesor+"\n";
			
			ps.println(texto);
			texto="";
			
			for(int i=0;i<alumno.size();i++)
			{
				if (alumno.elementAt(i).getEstado().equals(estado))
				{
					cont++;
					texto = (" Estado: "+alumno.elementAt(i).getEstado()+"  Cedula: "+alumno.elementAt(i).getCedula()+" Nombre: "+alumno.elementAt(i).getNombre()+" Apellido: "+alumno.elementAt(i).getApellido()+" Nota Final: "+alumno.elementAt(i).getNotaFinal()+"\n");			
				
					ps.println(texto);
				}
				
			}
			  if (cont ==0)
				  
			  {
				ps.println("No hay Alumnos "+ estado );
				  
			  }
			  
			
			ps.close();

	}
	

	public void listarPorNota(int nroSeccion, String nomProfesor) throws IOException
	{			
			
			ordenarNota(alumno);
			
			String nombreArchivo= "notaOrdenada.txt";
			FileOutputStream salida;
			PrintStream ps;
			salida = new FileOutputStream(nombreArchivo);			
			ps= new PrintStream(salida);
			
			String texto = "";
						
			//System.out.println("***********************Listado oredenado por nota total*******************************");
			texto="Seccion: "+ nroSeccion +"\nProfesor: "+ nomProfesor+"\n";
			//System.out.println(texto);
			ps.println(texto);
			texto="";
			for(int i=0;i<alumno.size();i++){
							
				texto = ("  Cedula: "+alumno.elementAt(i).getCedula())+"   Nombre: "+(alumno.elementAt(i).getNombre())+"   Apellido: "+(alumno.elementAt(i).getApellido())+"   Nota Final: "+(alumno.elementAt(i).getNotaFinal()+"\n");			
				ps.println(texto);
				//System.out.println(texto);
				//System.out.println("________________________________________________________________________________________");
			}
			
			ps.close();

	}
	
	
	public static Vector<Alumno> ordenarNota(Vector <Alumno> vAlumno){
		
		Vector <Alumno> temp = new Vector();
        String cedula ="";
        String nombre;
        String apellido;
    	double nota1;
    	double nota2;
    	double nota3;
    	double notaFinal;
    	String estado;
                
        int t = vAlumno.size();
        for (int i = 0; i < t; i++) {
            for (int k = t- 1; k > i; k--) {
                
            	if(vAlumno.elementAt(k).getNotaFinal()< vAlumno.elementAt(k-1).getNotaFinal())
                {
            		cedula=vAlumno.elementAt(k).getCedula();           
            		nombre=vAlumno.elementAt(k).getNombre();
            		apellido=vAlumno.elementAt(k).getApellido();
            		nota1=vAlumno.elementAt(k).getNota1();
            		nota2=vAlumno.elementAt(k).getNota2();
            		nota3=vAlumno.elementAt(k).getNota3();
            		notaFinal=vAlumno.elementAt(k).getNotaFinal();
            		estado=vAlumno.elementAt(k).getEstado();
            		
                	vAlumno.elementAt(k).setCedula(vAlumno.elementAt(k-1).getCedula());
                	vAlumno.elementAt(k).setNombre(vAlumno.elementAt(k-1).getNombre());
                	vAlumno.elementAt(k).setApellido(vAlumno.elementAt(k-1).getApellido());
                	vAlumno.elementAt(k).setNota1(vAlumno.elementAt(k-1).getNota1());
                	vAlumno.elementAt(k).setNota2(vAlumno.elementAt(k-1).getNota2());
                	vAlumno.elementAt(k).setNota3(vAlumno.elementAt(k-1).getNota3());
                	vAlumno.elementAt(k).setNotaFinal(vAlumno.elementAt(k-1).getNotaFinal());
                	vAlumno.elementAt(k).setEstado(vAlumno.elementAt(k-1).getEstado());
                	
                	vAlumno.elementAt(k-1).setCedula(cedula);
                	vAlumno.elementAt(k-1).setNombre(nombre);
                	vAlumno.elementAt(k-1).setApellido(apellido);
                	vAlumno.elementAt(k-1).setNota1(nota1);
                	vAlumno.elementAt(k-1).setNota2(nota2);
                	vAlumno.elementAt(k-1).setNota3(nota3);
                	vAlumno.elementAt(k-1).setNotaFinal(notaFinal);
                	vAlumno.elementAt(k-1).setEstado(estado);
                    
                    
                }//fin if
            }// fin 2 for
        }//fin 1 for
        return vAlumno;
       
    }//fin
	
	
	public double mostrarPromedio()//seccion
	{
				
		double suma=0;
		double promedio=0;
		String texto;
		
		for (int i=0;i<alumno.size();i++)
		{
			suma= suma + alumno.elementAt(i).getNotaFinal();		
		}
		promedio=suma/alumno.size();
		return promedio;
	}
	
	public void mostrarPromedioAlumno(int nroSeccion, String nomProfesor) throws FileNotFoundException
	
	{
		String texto="";		
		double suma=0;
		double promedio=0;
		
		
		
		String nombreArchivo= "promedioAlumnos.txt";
		FileOutputStream salida;
		PrintStream ps;
		salida = new FileOutputStream(nombreArchivo);			
		ps= new PrintStream(salida);
		
		texto="Seccion: "+ nroSeccion +"\nProfesor: "+ nomProfesor+"\n";
		ps.println(texto);
		texto="";
		
		for (int i=0;i<alumno.size();i++)
		{
			
			suma=(alumno.elementAt(i).getNota1()+alumno.elementAt(i).getNota2()+alumno.elementAt(i).getNota3());
			promedio=suma/3;
			
			texto="Cedula:  "+alumno.elementAt(i).getCedula()+"  Nombre: "+alumno.elementAt(i).getNombre()+" "+alumno.elementAt(i).getApellido()+"  "+"Promedio de notas: "+promedio+" Nota 1: "+alumno.elementAt(i).getNota1()+"  Nota 2: "+alumno.elementAt(i).getNota2()+"  Nota 3: "+alumno.elementAt(i).getNota3();
			 ps.println(texto);
			 
		}
		ps.close();
	}
	

	public void asignarProfesor(String cedula,	String nombre,	String apellido,String titulo) throws IOException
	{
					
		this.profesor.setCedula(cedula);		
		this.profesor.setNombre(nombre);		
		this.profesor.setApellido(apellido);		
		this.profesor.setTituloProfesor(titulo);
		
	}
	
	  public static void  aplicarEvaluacion()
	  {  
		 for(int i=0;i< alumno.size();i++) 
		 {
			 alumno.elementAt(i).setNota1(alumno.elementAt(i).presentarEvaluacion());
			 alumno.elementAt(i).setNota2(alumno.elementAt(i).presentarEvaluacion());
			 alumno.elementAt(i).setNota3(alumno.elementAt(i).presentarEvaluacion());
			 alumno.elementAt(i).setEstado("Presento");
			 
			 
			/* System.out.println("Cedula:  "+alumno.elementAt(i).getCedula()+"  Nombre: "+alumno.elementAt(i).getNombre()+" "+alumno.elementAt(i).getApellido());
			 System.out.println("Nota 1: "+alumno.elementAt(i).getNota1()+"    Nota 2: "+alumno.elementAt(i).getNota2()+"    Nota 3: "+alumno.elementAt(i).getNota3());
			 System.out.println("____________________________________________________________________");*/
          }		 
	  }
	
	


}